package com.hcss.common.shiro;

import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.TimeUnit;

/**
 * @描述:
 * @作者: xuqian
 * @创建日期: 2018-06-27 14:01
 * @公司 浙江鸿程计算机系统有限公司
 */
@Getter
@Setter
@Component
@ConfigurationProperties(prefix="shiro")
public class ShiroProperties {

    /**
     * 登录URL
     */
    private String loginUrl;

    /**
     * 登录成功跳转页面
     */
    private String successUrl;

    /**
     * 没有权限页面
     */
    private String unauthorizedUrl;

    /**
     * 全局缓存失效时间
     */
    private Integer defaultGlobalExpire;

    /**
     * shiro Cookie相关配置
     */
    private Cookie cookie;

    /**
     * redis中shiro缓存相关配置
     */
    private Redis redis;

    /**
     * 验证登录
     */
    private List<String> authc = new LinkedList<>();

    /**
     * 不验证登录
     */
    private List<String> anon = new LinkedList<>();

    /**
     * 不验证的文件后缀
     */
    private List<String> ignoreExt = new LinkedList<>();

    @Getter
    @Setter
    public static class Redis {
        /**
         * reids中shiro缓存key值前缀
         */
        private String namePrefix;

        /**
         * 缓存失效时间
         */
        private Integer expireTime;

        /**
         * 失效时间单位
         */
        public static final TimeUnit UNIT = TimeUnit.HOURS;
    }

    @Getter
    @Setter
    public static class Cookie {
        /**
         * cookie的名称
         */
        private String name;

        /**
         * cookie时间
         */
        private Integer maxAge;

        /**
         * 是否允许Javascript修改带有HttpOnly属性的Cookie
         */
        private boolean httpOnly;
    }
}
